const path = require('path')
const { defineConfig } = require('@vue/cli-service')
// const NodePolyfillPlugin = require('node-polyfill-webpack-plugin')

// dirname 必须是两个_，不然是识别不了的
function resolve (dir) {
  return path.join(__dirname, dir)
}

module.exports = defineConfig({
  transpileDependencies: true,
  // chainWebpack
  chainWebpack: config => {
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icon'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icon'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
  },
  // devServer 提供了代理功能，该代理可以把所有请求到当前服务中的请求转发(代理)到另外的一个服务器上
  devServer: {
    proxy: {
      // 当地址中包含/api的时候，触发此代理
      '/api': {
        target: 'http://localhost:8082',
        changeOrigin: true
      }
    }
  },
  // 在webpack5中移除了nodejs核心模块的polyfill自动引入，所以需要手动引入
  configureWebpack: (config) => {
    // const plugins = []
    // plugins.push(new NodePolyfillPlugin())
    config.performance = {
      maxEntrypointSize: 50000000,
      // 生成文件的最大体积
      maxAssetSize: 30000000
    }
    return {
      resolve: {
        alias: {
          '@': resolve('src')
        },
        fallback: {
          path: require.resolve('path-browserify')
        }
      }
    }
  }
})
